home *** CD-ROM | disk | FTP | other *** search
-
-
-
- DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS)))) DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS))))
-
-
-
- NNNNAAAAMMMMEEEE
- DLAED7 - compute the updated eigensystem of a diagonal matrix after
- modification by a rank-one symmetric matrix
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- SUBROUTINE DLAED7( ICOMPQ, N, QSIZ, TLVLS, CURLVL, CURPBM, D, Q, LDQ,
- INDXQ, RHO, CUTPNT, QSTORE, QPTR, PRMPTR, PERM,
- GIVPTR, GIVCOL, GIVNUM, WORK, IWORK, INFO )
-
- INTEGER CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N, QSIZ,
- TLVLS
-
- DOUBLE PRECISION RHO
-
- INTEGER GIVCOL( 2, * ), GIVPTR( * ), INDXQ( * ), IWORK( * ),
- PERM( * ), PRMPTR( * ), QPTR( * )
-
- DOUBLE PRECISION D( * ), GIVNUM( 2, * ), Q( LDQ, * ), QSTORE(
- * ), WORK( * )
-
- IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
- These routines are part of the SCSL Scientific Library and can be loaded
- using either the -lscs or the -lscs_mp option. The -lscs_mp option
- directs the linker to use the multi-processor version of the library.
-
- When linking to SCSL with -lscs or -lscs_mp, the default integer size is
- 4 bytes (32 bits). Another version of SCSL is available in which integers
- are 8 bytes (64 bits). This version allows the user access to larger
- memory sizes and helps when porting legacy Cray codes. It can be loaded
- by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
- only one of the two versions; 4-byte integer and 8-byte integer library
- calls cannot be mixed.
-
- PPPPUUUURRRRPPPPOOOOSSSSEEEE
- DLAED7 computes the updated eigensystem of a diagonal matrix after
- modification by a rank-one symmetric matrix. This routine is used only
- for the eigenproblem which requires all eigenvalues and optionally
- eigenvectors of a dense symmetric matrix that has been reduced to
- tridiagonal form. DLAED1 handles the case in which all eigenvalues and
- eigenvectors of a symmetric tridiagonal matrix are desired.
-
- T = Q(in) ( D(in) + RHO * Z*Z' ) Q'(in) = Q(out) * D(out) * Q'(out)
-
- where Z = Q'u, u is a vector of length N with ones in the
- CUTPNT and CUTPNT + 1 th elements and zeros elsewhere.
-
- The eigenvectors of the original matrix are stored in Q, and the
- eigenvalues are in D. The algorithm consists of three stages:
-
- The first stage consists of deflating the size of the problem
- when there are multiple eigenvalues or if there is a zero in
- the Z vector. For each such occurence the dimension of the
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS)))) DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS))))
-
-
-
- secular equation problem is reduced by one. This stage is
- performed by the routine DLAED8.
-
- The second stage consists of calculating the updated
- eigenvalues. This is done by finding the roots of the secular
- equation via the routine DLAED4 (as called by DLAED9).
- This routine also calculates the eigenvectors of the current
- problem.
-
- The final stage consists of computing the updated eigenvectors
- directly using the updated eigenvalues. The eigenvectors for
- the current problem are multiplied with the eigenvectors from
- the overall problem.
-
-
- AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
- ICOMPQ (input) INTEGER
- = 0: Compute eigenvalues only.
- = 1: Compute eigenvectors of original dense symmetric matrix
- also. On entry, Q contains the orthogonal matrix used to reduce
- the original matrix to tridiagonal form.
-
- N (input) INTEGER
- The dimension of the symmetric tridiagonal matrix. N >= 0.
-
- QSIZ (input) INTEGER
- The dimension of the orthogonal matrix used to reduce the full
- matrix to tridiagonal form. QSIZ >= N if ICOMPQ = 1.
-
- TLVLS (input) INTEGER
- The total number of merging levels in the overall divide and
- conquer tree.
-
- CURLVL (input) INTEGER The current level in the overall merge
- routine, 0 <= CURLVL <= TLVLS.
-
- CURPBM (input) INTEGER The current problem in the current level in
- the overall merge routine (counting from upper left to lower
- right).
-
- D (input/output) DOUBLE PRECISION array, dimension (N)
- On entry, the eigenvalues of the rank-1-perturbed matrix. On
- exit, the eigenvalues of the repaired matrix.
-
- Q (input/output) DOUBLE PRECISION array, dimension (LDQ, N)
- On entry, the eigenvectors of the rank-1-perturbed matrix. On
- exit, the eigenvectors of the repaired tridiagonal matrix.
-
- LDQ (input) INTEGER
- The leading dimension of the array Q. LDQ >= max(1,N).
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS)))) DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS))))
-
-
-
- INDXQ (output) INTEGER array, dimension (N)
- The permutation which will reintegrate the subproblem just solved
- back into sorted order, i.e., D( INDXQ( I = 1, N ) ) will be in
- ascending order.
-
- RHO (input) DOUBLE PRECISION
- The subdiagonal element used to create the rank-1 modification.
-
- CUTPNT (input) INTEGER Contains the location of the last
- eigenvalue in the leading sub-matrix. min(1,N) <= CUTPNT <= N.
-
- QSTORE (input/output) DOUBLE PRECISION array, dimension (N**2+1)
- Stores eigenvectors of submatrices encountered during divide and
- conquer, packed together. QPTR points to beginning of the
- submatrices.
-
- QPTR (input/output) INTEGER array, dimension (N+2)
- List of indices pointing to beginning of submatrices stored in
- QSTORE. The submatrices are numbered starting at the bottom left
- of the divide and conquer tree, from left to right and bottom to
- top.
-
- PRMPTR (input) INTEGER array, dimension (N lg N) Contains a list
- of pointers which indicate where in PERM a level's permutation is
- stored. PRMPTR(i+1) - PRMPTR(i) indicates the size of the
- permutation and also the size of the full, non-deflated problem.
-
- PERM (input) INTEGER array, dimension (N lg N)
- Contains the permutations (from deflation and sorting) to be
- applied to each eigenblock.
-
- GIVPTR (input) INTEGER array, dimension (N lg N) Contains a list
- of pointers which indicate where in GIVCOL a level's Givens
- rotations are stored. GIVPTR(i+1) - GIVPTR(i) indicates the
- number of Givens rotations.
-
- GIVCOL (input) INTEGER array, dimension (2, N lg N) Each pair of
- numbers indicates a pair of columns to take place in a Givens
- rotation.
-
- GIVNUM (input) DOUBLE PRECISION array, dimension (2, N lg N) Each
- number indicates the S value to be used in the corresponding
- Givens rotation.
-
- WORK (workspace) DOUBLE PRECISION array, dimension (3*N+QSIZ*N)
-
- IWORK (workspace) INTEGER array, dimension (4*N)
-
- INFO (output) INTEGER
- = 0: successful exit.
- < 0: if INFO = -i, the i-th argument had an illegal value.
- > 0: if INFO = 1, an eigenvalue did not converge
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS)))) DDDDLLLLAAAAEEEEDDDD7777((((3333SSSS))))
-
-
-
- FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
- Based on contributions by
- Jeff Rutter, Computer Science Division, University of California
- at Berkeley, USA
-
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- INTRO_LAPACK(3S), INTRO_SCSL(3S)
-
- This man page is available only online.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-